package Test28;

//math类的使用
/*
public static int       abs(int a)                  获取参数绝对值
public static double    ceil(double a)              向上取整
public static double    floor(double a)             向下取整
public static int       round(float a)              四舍五入
public static int       max(int a,int b)            获取两个int值中的较大值
public static int       min(int a,int b)            获取两个int值中的较小值
public static double    pow(double a, double b)     返回a的b次幂的值
public static double    sqrt(double a)              返回a的平方根
public static double    cbrt( double a)             返回a的立方根
public static double    random()                    返回值为double的随机值，范围[0.0,1.0)
 */
public class Test01 {
    public static void main(String[] args) {

        //1、abs：获取参数绝对值
        System.out.println(Math.abs(88));
        System.out.println(Math.abs(-88));
        //bug:
        //以int类型为例，取值范围 -2147483648~2147483647
        //如果没有正数与负数对应，那么传递负数结果有误
        //-2147483648没有正数与之对应，所以abs结果产生bug
        System.out.println(Math.abs(-2147483648));
        //System.out.println(Math.absExact(-2147483648));可以返回一个异常

        System.out.println("---------------------");

        //2、ceil：向上取整（进一法，往数轴正方向进一）
        System.out.println(Math.ceil(12.34));
        System.out.println(Math.ceil(12.54));
        System.out.println(Math.ceil(-12.34));
        System.out.println(Math.ceil(-12.54));

        System.out.println("---------------------");

        //3、floor：向下取整（去尾法，往数轴负方向走）
        System.out.println(Math.floor(12.34));
        System.out.println(Math.floor(12.54));
        System.out.println(Math.floor(-12.34));
        System.out.println(Math.floor(-12.54));

        System.out.println("---------------------");

        //4、round：四舍五入
        System.out.println(Math.round(12.34));
        System.out.println(Math.round(12.54));
        System.out.println(Math.round(-12.34));
        System.out.println(Math.round(-12.54));

        System.out.println("---------------------");

        //5、max：获取两个整数的较大值
        System.out.println(Math.max(20, 30));

        System.out.println("---------------------");

        //6、min：获取两个整数的较小值
        System.out.println(Math.min(20, 30));

        System.out.println("---------------------");

        //7、pow：获取a的b次幂
        System.out.println(Math.pow(2, 3));
        //细节：如果的第二个参数为0~1之间的小数，就是开根号
        System.out.println(Math.pow(4, 0.5));
        System.out.println(Math.pow(2, -2));
        //建议：第二个参数：一般传递大于等于1的正整数。

        System.out.println("---------------------");

        //8、sqrt：开平方
        System.out.println(Math.sqrt(4));

        System.out.println("---------------------");

        //9、cbrt：开立方
        System.out.println(Math.cbrt(8));

        System.out.println("---------------------");

        //10、random：获取随机数（0.0~1.0）
        for (int i = 0; i < 10; i++) {
            System.out.println(Math.random());
        }
        System.out.println("---------------------");
        //1 ~ 100的随机数
        for (int i = 0; i < 10; i++) {
            System.out.println(Math.floor(Math.random() * 100) + 1);
        }
    }
}
